﻿#ifndef WEBSOCKET_H
#define WEBSOCKET_H

#include <QJsonObject>
#include <QJsonParseError>
#include <QObject>
#include <QString>
#include <QTimer>
#include <QtWebSockets/QWebSocket>
#include "point.h"
class Websocket : public QObject {
  Q_OBJECT
 public:
  explicit Websocket(QObject* parent = nullptr);
  ~Websocket();
  void sendTextMessage(const QByteArray& msg);
  bool getConnectStatus();
  Point getSlamPose();
  void getBasePos();
  void setInitPos(double x, double y, double yaw);
  void init();
  void close();
  void createDataRecvWS(const QString& ip, const int& id); /*-<创建websocket连接 */

 private:
  QWebSocket* dataRecvWS = Q_NULLPTR; /*-<websocket类 */
  QTimer* m_timer;                    /*-<周期重连Timer */
  bool connectStatus = false;         /*-<websocket连接状态，连接成功：true；断开：false */
  Point slam_point;
  QByteArray get_base_pos = " ";
  QString url = " ";

 signals:
  void sigSendTips(QString);

 private slots:
  void reconnect();                        /*-<周期重连函数 */
  void onConnected();                      /*-<socket建立成功后，触发该函数 */
  void onTextReceived(const QString& msg); /*-<收到Sev端的数据时，触发该函数 */
  void onDisConnected();                   /*-<socket连接断开后，触发该函数 */
};

#endif  // WEBSOCKET_H
